From e55a85ee8ef354ecd7f113f05dd2ad139ee9bcd2 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Mon, 27 Nov 2006 23:44:53 +0000 Subject: [PATCH] Tweak gbfeof to become compatible with feof. --- gbfile.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gbfile.c b/gbfile.c index 0916f63d0..0639191dc 100644 --- a/gbfile.c +++ b/gbfile.c @@ -437,7 +437,25 @@ gbfeof(gbfile *file) { if (file->gzapi) { #if !ZLIB_INHIBITED - return gzeof(file->handle.gz); + int res = gzeof(file->handle.gz); + + if (!res) { + signed char test; + int len = gzread(file->handle.gz, &test, 1); + if (len == 1) { + /* No EOF, put the single byte back into stream */ + gzungetc(test, file->handle.gz); + } + else { + /* we are at the end of the file */ + if (global_opts.debug_level > 0) { + /* now gzeof() should return 1 */ + is_fatal(!gzeof(file->handle.gz), "zlib gzeof error!\n"); + } + res = 1; + } + } + return res; #else fatal(NO_ZLIB); return 0; -- 2.30.2